package com.hipac.qs.quartz;

import org.quartz.JobExecutionContext;
import org.quartz.Trigger;
import org.quartz.TriggerListener;

/**
 * Created by xiaogu on 2017/3/8.
 */
public class MyTriggerListener implements TriggerListener {
    @Override
    public String getName() {
        return "MyTriggerListener";
    }

    // trigger 已经点火完毕执行
    @Override
    public void triggerFired(Trigger trigger, JobExecutionContext context) {
        System.out.println("trigger already fired!!");
    }

    // 对 trigger 已经点火完毕 即将执行的job做 执行判定 true表示否决 false表示同意执行
    // 我们在这里否决它 可以看到 MyJobListener 的 jobExecutionVetoed 方法被执行
    @Override
    public boolean vetoJobExecution(Trigger trigger, JobExecutionContext context) {
        return true;
    }

    // 当一个trigger 点火失败时执行
    // 源码中的注释 意思为这个地方的代码的执行时间应该尽量短 否则发生大量点火失败的情况会出现issue[问题]
    public void triggerMisfired(Trigger trigger) {
        System.out.println("trigger misfired");
    }

    // 点火完毕 任务被执行 后执行改方法
    @Override
    public void triggerComplete(Trigger trigger, JobExecutionContext context, Trigger.CompletedExecutionInstruction triggerInstructionCode) {
        System.out.println("trigger completed!!!");
    }
}
